Host computers (“hosts”), such as Windows-based personal computers, may operate with many peripheral devices, such as keyboard, mouse, monitor, printer, scanner, mass storage and/or other peripheral devices. A Universal Serial Bus (USB) can be used to connect these and/or other peripheral devices to the host computer. The USB can provide a connection for peripheral devices to host computers using a standard connector and form factor, and also permits the connection and disconnection of USB-compatible peripheral devices while the host computer is turned on.
As is also well known to those having skill in the art, in order to achieve the full operability of a peripheral device, a driver for the peripheral device typically needs to be present or installed on the host computer for each peripheral device. An operating system on the host computer, such as a Windows or Linux operating system, typically includes drivers for various classes of USB-based peripheral devices, such as audio, printer, communication, mass storage and human interface devices. When the peripheral device is connected to the USB, the connected peripheral device may be identified by the host computer using a hardware identifier that is transmitted by the peripheral device, and then the device class is ascertained. The hardware identifier/device class may be transmitted to the host computer by the peripheral device as part of a “configuration” message, in which the peripheral device notifies the host computer of its attributes. Using the ascertained device class, the operating system loads the appropriate driver, which is then entered into a registry and can be assigned on the basis of this entry when the peripheral device is connected again in the future.
As the number and type of peripheral devices for host computers continue to expand, many of these peripheral devices may not belong to any of the defined device classes that are preinstalled in the operating system. In these situations, an installation disk or CD is generally provided from which the driver(s) can be loaded onto the host computer. This installation process also may require user input, in which the user may need to have detailed knowledge of the peripheral device and of the host computer.
Attempts have been made to reduce or eliminate the need for a separate installation disk/CD and/or the complexity of the driver installation process by providing drivers that are stored in a memory of the USB-based peripheral device itself. For example, U.S. Pat. No. 6,754,725 to Wright et al., is entitled USB Peripheral Containing Its Own Device Driver. As noted in the Abstract of this patent, a peripheral device comprises a computer readable media and an interface circuit. The computer readable media may be configured to store instructions for operating the peripheral device. The interface circuit may be configured to communicate the instructions to an operating system of a computer in response to connection of the peripheral device to the computer. Moreover, U.S. Patent Application Publication 2005/0038934 to Gotze et al., entitled USB-Based Peripheral Device and Method for Starting Up the USB-Based Peripheral Device provides a USB-based peripheral device for operation with a host system, having a driver for operation with the host system, wherein the driver is stored in a memory in the USB-based peripheral device, and with startup of the peripheral device on the host system, prompting-automatic installation of the driver on the host system, as noted in the Abstract thereof. Finally, U.S. Patent Application Publication 2006/0037015 to Mihai, entitled Embedded Driver for Bus-Connected Device, provides a device including a storage component to store a driver for the device, and a device protocol handler to enable automatic upload of the driver to a storage subsystem of a processor based system in response to the device being communicatively coupled to a bus of the processor based system, as noted in the Abstract thereof.
Unfortunately, however, user input during device driver installation may still be needed, even when the device driver(s) for a peripheral device are stored on the peripheral device itself. Moreover, many peripheral devices, such as USB-based peripheral devices, may be carried from host computer to host computer by a user. In these situations, the device driver installation process may need even more user intervention, even though the device driver is stored on the peripheral device itself.